//
//  BANavigationController.swift
//  BAweibo
//
//  Created by baggio on 2017/8/2.
//  Copyright © 2017年 baggio. All rights reserved.
//


//需求：导航栏的左上角，二级页面分别显示“首页”、“消息”、“发现”，“我”，二级以上界面都显示“返回”
//所以要自定义导航器

import UIKit

class BANavigationController: UINavigationController ,UIGestureRecognizerDelegate{

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //重新设置导航器左侧按钮后，pop手势就失效，需要重写设置 手势代理，需要实现协议 UIGestureRecognizerDelegate
        interactivePopGestureRecognizer?.delegate=self
    }
    
    //一级界面默认也接受 pop 手势，要去掉(return false)，否则一级界面执行了 pop 手势后，再点导航器右侧按钮，会卡死
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        return childViewControllers.count != 1
    }
    
    //重写 push 返回方法 pushViewController，mainViewController 中执行 addChildViewController(nav)，就是一个 push 操作
    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        
        //childViewControllers 是所有的控制器，count==0是一级控制器（页面）
        //要执行了 super.pushViewController()，count 才会 +1
        //print(childViewControllers.count)
        
        //二级及以上页面
        if childViewControllers.count>0{
            var title="返回"
            //二级页面
            if childViewControllers.count == 1{
                //childViewControllers.first? 第一个控制器，就是首页控制器
                title=(childViewControllers.first?.title) ?? "返回"
            }
            
            //不要少 viewController.
            viewController.navigationItem.leftBarButtonItem=UIBarButtonItem(title: title, imgName: "navigationbar_back_withtext", target: self, action: #selector(leftClick))
        }
        
        //push 到下一个控制器
        super.pushViewController(viewController, animated: animated)
        //print(childViewControllers.count)
    }
    
    //返回上一个页面
    @objc private func leftClick(){
        popViewController(animated: true)
    }
    
}
